package com.mixsmart.spellsql;

import java.util.HashMap;
import java.util.Map;

import com.mixsmart.utils.StringUtils;

/**
 * 条件查询--实现类
 * @author lmq
 * @version 1.0
 * @since 1.0
 */
public abstract class Condition implements ICondition {

	private HashMap<String,Object> params = new HashMap<String,Object>();
	
	/**
	 * 组合参数（添加参数）
	 * @param fieldName 字段名称
	 * @param value 值
	 * @return 返回Map对象参数
	 */
	protected Map<String,Object> addParameter(String fieldName, Object value) {
		params.put(fieldName, value);
		return params;
	}
	
	/**
	 * 组合参数（添加参数）
	 * @param leftCnd 条件1
	 * @param rightCnd 条件2
	 * @return 返回Map对象参数
	 */
	protected Map<String,Object> addParameter(ICondition leftCnd, ICondition rightCnd) {
		if( null != leftCnd && null != leftCnd.getParameters() 
		        && leftCnd.getParameters().size()>0)  
			params.putAll(leftCnd.getParameters());
		if(null != rightCnd && null != rightCnd.getParameters() 
				&& rightCnd.getParameters().size()>0) 
			params.putAll(rightCnd.getParameters());
		return params;
	}

	@Override
	public HashMap<String, Object> getParameters() {
		return params;
	}
	
	/**
	 * 获取左边常量值，常量值用单引号引起来；如:"'12'value"
	 * @param value 需要处理的变量
	 * @return 返回常量值；如：12
	 */
	protected String getLeftConstantValue(String value) {
	    String cstValue = "";
	    if(StringUtils.isNotEmpty(value)) {
	        if(value.startsWith("'")) {
                int p = value.indexOf("'", 1);
                if(p > -1) {
                    cstValue = value.substring(1, p);
                }
            }
	    }
	    return cstValue;
	}
	
	/**
     * 获取右边常量值，常量值用单引号引起来；如:"value'12'"
     * @param value 需要处理的变量
     * @return 返回常量值；如：12
     */
    protected String getRightConstantValue(String value) {
        String cstValue = "";
        if(StringUtils.isNotEmpty(value)) {
            if(value.endsWith("'")) {
                int p = value.substring(0, value.length() - 1).lastIndexOf("'");
                if(p > -1) {
                    cstValue = value.substring(p+1, value.length()-1);
                }
            }
        }
        return cstValue;
    }
    
    /**
     * 去掉单引号中的值；如:"value'12'"
     * @param value 需要处理的变量
     * @return 返回处理后的值；如：value
     */
    protected String removeSingleQuoteValue(String value) {
        if(StringUtils.isNotEmpty(value)) {
            value = value.replaceAll("'.*?'", "");
        }
        return value;
    }
    
    
}
